home *** CD-ROM | disk | FTP | other *** search
- """Class based built-in exception hierarchy.
-
- This is a new feature whereby all the standard built-in exceptions,
- traditionally string objects, are replaced with classes. This gives
- Python's exception handling mechanism a more object-oriented feel.
-
- Most existing code should continue to work with class based
- exceptions. Some tricky uses of IOError may break, but the most
- common uses should work.
-
- To disable this feature, start the Python executable with the -X option.
-
- Here is a rundown of the class hierarchy. You can change this by
- editing this file, but it isn't recommended. The classes with a `*'
- are new with this feature. They are defined as tuples containing the
- derived exceptions when string-based exceptions are used.
-
- Exception(*)
- |
- +-- StandardError(*)
- |
- +-- SystemExit
- +-- KeyboardInterrupt
- +-- ImportError
- +-- IOError
- +-- EOFError
- +-- RuntimeError
- +-- NameError
- +-- AttributeError
- +-- SyntaxError
- +-- TypeError
- +-- AssertionError
- +-- LookupError(*)
- | |
- | +-- IndexError
- | +-- KeyError
- |
- +-- ArithmeticError(*)
- | |
- | +-- OverflowError
- | +-- ZeroDivisionError
- | +-- FloatingPointError
- |
- +-- ValueError
- +-- SystemError
- +-- MemoryError
- """
-
- class Exception:
- def __init__(self, *args):
- self.args = args
-
- def __str__(self):
- if not self.args:
- return ''
- elif len(self.args) == 1:
- return str(self.args[0])
- else:
- return str(self.args)
-
- def __getitem__(self, i):
- return self.args[i]
-
- class StandardError(Exception):
- pass
-
- class SyntaxError(StandardError):
- filename = lineno = offset = text = None
- msg = ""
- def __init__(self, *args):
- self.args = args
- if len(self.args) >= 1:
- self.msg = self.args[0]
- if len(self.args) == 2:
- info = self.args[1]
- try:
- self.filename, self.lineno, self.offset, self.text = info
- except:
- pass
- def __str__(self):
- return str(self.msg)
-
- class IOError(StandardError):
- def __init__(self, *args):
- self.args = args
- self.errno = None
- self.strerror = None
- if len(args) == 2:
- # common case: PyErr_SetFromErrno()
- self.errno = args[0]
- self.strerror = args[1]
-
- class RuntimeError(StandardError):
- pass
-
- class SystemError(StandardError):
- pass
-
- class EOFError(StandardError):
- pass
-
- class ImportError(StandardError):
- pass
-
- class TypeError(StandardError):
- pass
-
- class ValueError(StandardError):
- pass
-
- class KeyboardInterrupt(StandardError):
- pass
-
- class AssertionError(StandardError):
- pass
-
- class ArithmeticError(StandardError):
- pass
-
- class OverflowError(ArithmeticError):
- pass
-
- class FloatingPointError(ArithmeticError):
- pass
-
- class ZeroDivisionError(ArithmeticError):
- pass
-
- class LookupError(StandardError):
- pass
-
- class IndexError(LookupError):
- pass
-
- class KeyError(LookupError):
- pass
-
- class AttributeError(StandardError):
- pass
-
- class NameError(StandardError):
- pass
-
- class MemoryError(StandardError):
- pass
-
- class SystemExit(Exception):
- def __init__(self, *args):
- self.args = args
- if len(args) == 0:
- self.code = None
- elif len(args) == 1:
- self.code = args[0]
- else:
- self.code = args
-